/* NOTICE
    OpenJaWS - Open Java Weather Station
    
    Copyright (C) 2008 Grant Gardner <grant@lastweekend.com.au>
    
    OpenJaWS is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    
NOTICE */

package au.com.lastweekend.openjaws.units;

public enum TimeUnit implements Unit {

    SECOND(1.0, "s"),
    YOTTASECOND(SIPrefix.YOTTA),
    ZETTASECOND(SIPrefix.ZETTA),
    EXASECOND(SIPrefix.EXA),
    PETASECOND(SIPrefix.PETA),
    TERASECOND(SIPrefix.TERA),
    GIGASECOND(SIPrefix.GIGA),
    MEGASECOND(SIPrefix.MEGA),
    KILOSECOND(SIPrefix.KILO),
    HECTOSECOND(SIPrefix.HECTO),
    DECASECOND(SIPrefix.DECA),
    DECISECOND(SIPrefix.DECI),
    CENTISECOND(SIPrefix.CENTI),
    MILLISECOND(SIPrefix.MILLI),
    MICROSECOND(SIPrefix.MICRO),
    NANOSECOND(SIPrefix.NANO),
    PICOSECOND(SIPrefix.PICO),
    FEMTOSECOND(SIPrefix.FEMTO),
    ATTOSECOND(SIPrefix.ATTO),
    ZEPTOSECOND(SIPrefix.ZEPTO),
    YOCTOSECOND(SIPrefix.YOCTO),
    MINUTE(60, "min"),
    HOUR(60 * MINUTE.multiplier, "h"),
    DAY(24 * HOUR.multiplier, "day"),
    WEEK(7 * DAY.multiplier, "wk");

    private double multiplier;
    private String utfSymbol;

    private TimeUnit(SIPrefix prefix) {

        this(prefix.getMultiplier(), prefix.toString() + "s");
    }

    private TimeUnit(double multiplier, String utfSymbol) {

        this.multiplier = multiplier;
        this.utfSymbol = utfSymbol;
    }

    public double convertFrom(double value, Unit unit) {

        return value * ((TimeUnit) unit).multiplier / multiplier;

    }

    public String toString() {

        return utfSymbol;
    }

    public double getMultiplier() {

        return multiplier;
    }

}
